#include <thread>
#include <iostream>
#include <unistd.h>
using namespace std;
// g++ -pthread thread_3.cpp -o thread_3
// 普通函数
void func(int bh, const string& str){
   cout << "运行中的子线程: " << this_thread::get_id() << endl;
   for(int i = 1; i <= 3; i++){
    cout << "第" << i << "次表白：亲爱的" << bh << "号, " << str << endl;
    // usleep(1000000);  // 睡眠 1000000 微秒（1 秒）
    this_thread::sleep_for(chrono::seconds(1));  // 休眠1s
   }
}

int main()
{
    // 用普通函数创建线程
   thread t1(func,3,"我是一只傻傻鸟。");
   thread t2(func,8,"我是一只小小鸟。");
   // 相同的程序，每次运行，产生的线程id是不同的
   cout << "主线程：" << this_thread::get_id() << endl;
   cout << "线程t1: " << t1.get_id() << endl;
   cout << "线程t2: " << t2.get_id() << endl;
   t1.swap(t2);  // 交换t1和t2
   cout << "线程t1: " << t1.get_id() << endl;
   cout << "线程t2: " << t2.get_id() << endl;

   thread t3 = move(t2);  // 只能转移和交换，不能赋值和拷贝

   t1.join();   // 回收线程t1的资源
   t3.join();   // 回收线程t2的资源

}